本章整理內容
MongoDB是NoSQL的資料庫,以文件儲存資料,一般資料庫開Table須定義欄位(大小、型別、名稱等),但是Collection完全不事先定義欄位,每筆document可以有不等數量的欄位。。
名詞對應:
MongoDB | RDBMS | 意思 |
---|---|---|
db | DB | 資料庫 |
collection | Table | 表格 |
document | record | 一筆紀錄 |
事先須安裝好docker與docker-compose,
這邊直接新增docker-compose.yml 貼上網路找到的內容
version: '3.1'
services:
mongo:
image: mongo
ports:
- "27017:27017"
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
在與yml黨相同目錄下啟動
➜ mongo git:(master) ✗ docker-compose up -d
Creating network "mongo_default" with the default driver
Creating mongo_mongo_1 ... done
以下可用透過一些網上mongo工具 ex Robo3T操作
先進行連線進入介面host: localhost, port: 27017
{
"profile" : {
"name" : "user1",
"gender" : "F",
"age" : 18
}
}
新增完會自動產生唯一的objectID,透過工具也可以對資料做簡單的修改動作。
db.getCollection('user').find({})
db.getCollection('user').find({_id:ObjectId("5eaa780f3dfac43981e4412c")})
db.getCollection('user').find({"profile.name":"user1"})
[gt大於,gte大於等於,lt小於,lte小於等於]
db.getCollection('user').find({"profile.gender":"F","profile.age":{$gt:2,$lte:18}})
按UTF-8進行字典排序 表搜尋字母A~Z間
db.getCollection('user').find({"profile.name":{$gt:"a",$lte:"z"}})
db.getCollection('user').find().count()
依命名排序,其中 1 为升序排列,而 -1 是用于降序排列
db.getCollection('user').find({}).sort({name:1})
可以用他來做分頁讀取
db.getCollection('user').find({}).sort({name:1}).skip(0).limit(2)
一般來說工具就可以做內容更新,但如果需要透過指令,
將性別欄位“F”全改成“woman”
db.getCollection('user').find().forEach( function(d) {
if(d.profile.gender=="F"){
d.profile.gender="woman"
db.getCollection('user').update({"profile.name":d.profile.name},d);
print(d.profile.name+" process change done" );
};
});
db.getCollection('user').find().forEach( function(d) {
d.description= d.profile.name+","+d.profile.gender;
db.getCollection('user').update({"profile.name":d.profile.name},d);
print(d.profile.name+" process change done" );
});
db.getCollection('user').find().forEach( function(d) {
delete d.description
db.getCollection('user').update({"profile.name":d.profile.name},d);
print(d.profile.name+" process change done" );
});
load("script/Change.js") //檔案位置
mongo 127.0.0.1:27017/test Change.js
執行結果與上述內容一樣
之後再介紹如何用 golang 程式去對 mongo CRUD 操作.(待續)